﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.Objects.SqlClient;

namespace proyectoENS
{
    public class DALMaterias
    {
        private static proyectoENSEntities db = new proyectoENSEntities();

        public static int newMateria(Materias unaMateria)
        {
            db.Materias.AddObject(unaMateria);
            return db.SaveChanges();
        }
        public static List<Materias> getIntegradorasByCurso (int idCurso)
        {
            Cursos temp = DALCursos.getCursoById (idCurso);
            var lista = (from m in db.Materias
                        where m.integradora == true && m.idModalidad == temp.idModalidad
                        select m).ToList<Materias>();
            return lista;
        }

        public static List<Materias> getMateriasByCurso(int idCurso)
        {
            Cursos tmp = DALCursos.getCursoById(idCurso);
            var lista = (from m in db.Materias
                         where m.año == tmp.año
                         && m.idModalidad == tmp.idModalidad
                         select m).ToList<Materias>();
            return lista;
        }
        public static List<Materias> getMateriasPreviasByIdAlumno(int idAlumno)
        {
            List<Materias> lista = new List<Materias>();
            var materiasCursadas = (from ca in db.Calificaciones
                                    join m in db.Materias
                                    on ca.idMateria equals m.idMateria
                                    where ca.idAlumno == idAlumno
                                    select m).ToList<Materias>();
            foreach (Materias item in materiasCursadas)
            {
                decimal promedio = (decimal)DALNotas.getPromedioFinalByIdAlumnoMateria(idAlumno, item.idMateria);
                if ((promedio > 0) && (promedio <= 7))
                    if (!lista.Contains(item))
                        lista.Add(item);
                        
            }
            return lista;

        }
        public static List<Materias> getMateriasByAñoModalidad(int año, int idModalidad)
        {
            var lista = (from m in db.Materias
                         where m.año == año && m.idModalidad == idModalidad
                         select m).ToList<Materias>();
            return lista;
        }
        public static Materias getMateriaById(int idMateria)
        {
            var lista = (from m in db.Materias
                         where m.idMateria == idMateria
                         select m).FirstOrDefault<Materias>();
            return lista;
        }
        public static void editMaterias(Materias m)
        {
            var temp = (from a in db.Materias
                        where a.idMateria == m.idMateria
                        select a).FirstOrDefault<Materias>();
            temp.integradora = m.integradora;
            temp.nombreMateria = m.nombreMateria;
            temp.observaciones = m.observaciones;
            temp.año = m.año;
            db.SaveChanges();
        }
    }
}
